package graph;

import java.util.Iterator;

import set.Set;
import map.Map;

public class Graph<T> {

	private boolean adj[][];
	private long size;
	
	public Graph(GraphNode<T>[] elem){
		
	}
	
	public boolean addEdge(GraphNode<T> v, GraphNode<T> u){
		return false;
	}
	
	public boolean removeEdge(GraphNode<T> v, GraphNode<T> u){
		return false;
	}
	
	public Graph<T> addVertex(GraphNode<T> elem){
		return null;
	}
	
	public Graph<T> remove(GraphNode<T> node){
		return null;	
	}
	
	public Graph<T> remove(GraphNode<T>[] node){
		return null;	
	}
	
	public Set<T> getVertexSet(){
		return null;
	}
	
	public Set<T> neigboorhood(GraphNode<T> v){
		return null;
		
	}
	
	public long degree(GraphNode<T> v){
		return 0;
	}
	
	public boolean isNeigboor(GraphNode<T> v, GraphNode<T> u){
		return false;
	}
	
	public long size(){
		return 0;	
	}
	
	public long numedges(){
		return 0;	
	}
	
	public long numVertex(){
		return 0;
	}
	
	public Iterator<GraphNode<T>> deepFirtSearch(){
		return null;	
	}
	
	public Iterator<GraphNode<T>> branchFirtSearch(){
		return null;	
	}
	
	public Iterator<GraphNode<T>> bestFirtSearch(Evaluetor value){
		return null;	
	}
	
	public boolean isEmpty(){
		return false;	
	}
	
	public boolean isBipartite(){
		return false;
	}
	
	public boolean isEulerian(){
		return false;
	}
	
	public Set<Set<GraphNode<T>>> getBipartitions(){
		return null;	
	}
	
	public Set<GraphNode<T>> getMaximalClique(){
		return null;
	}
	
	public Set<GraphNode<T>> getMaximalStableSet(){
		return null;
	}
	
	public Map<GraphNode<T>, Long> getColoring(){
		return null;
	}
}
